package com.kotlin.flong.coroutines

import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

/**
 * @Author:liangjl
 * @Date: 2020/7/6-19:03
 * @Eamil:jilongliang@sina.com
 * @Description:
 * 第一个协程
 * https://www.jianshu.com/p/76d2f47b900d
 * kotlin 在 1.3 之后要求协程必须由CoroutineScope创建CoroutineScope不阻塞当前线程，在后台创建一个新协程，也可以指定协程调度器。
 * 比如 CoroutineScope.launch{} 可以看成 new Coroutine
 * launch - 创建协程
 * async - 创建带返回值的协程，返回的是 Deferred 类
 * withContext - 不创建新的协程，在指定协程上运行代码块
 * runBlocking - 不是 GlobalScope 的 API，可以独立使用，区别是 runBlocking 里面的 delay 会阻塞线程，而 launch 创建的不会
 */
fun main() {

    GlobalScope.launch() {
        delay(1000)
        println("kotlinx coroutines")
    }

    println("准备开始协程")

    Thread.sleep(2000)
    println("结束协程")


}